home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / tex / doc.sty < prev    next >
Encoding:
Text File  |  1991-11-27  |  21.3 KB  |  536 lines

  1. %% 
  2. %% This is file `doc.sty' generated
  3. %% on <1991/4/10> with the docstrip utility (v1.1l test). 
  4. %% 
  5. %% The original source file was `doc.doc'.
  6. %% 
  7. %% 
  8. %% Copyright (C) 1989,1990,1991 by Frank Mittelbach. All rights reserved. 
  9. %% 
  10. %% IMPORTANT NOTICE: 
  11. %% 
  12. %% You are not allowed to change this file. You may however copy this file 
  13. %% to a file with a different name and then change the copy. 
  14. %% 
  15. %% You are NOT ALLOWED to distribute this file alone. You are NOT ALLOWED 
  16. %% to take money for the distribution or use of this file (or a changed 
  17. %% version) except for a nominal charge for copying etc. 
  18. %% 
  19. %% You are allowed to distribute this file under the condition that it is 
  20. %% distributed together with all files mentioned in readme.mz1. 
  21. %% 
  22. %% If you receive only some of these files from someone, complain! 
  23. %% 
  24. %% However, if these files are distributed by established suppliers as part 
  25. %% of a complete TeX distribution, and the structure of the distribution 
  26. %% would make it difficult to distribute the whole set of files, *those 
  27. %% parties* are allowed to distribute only some of the files provided that 
  28. %% it is made clear that the user will get a complete distribution-set upon 
  29. %% request to that supplier (not me). 
  30. %% Notice that this permission is not granted to the end user. 
  31. %% 
  32. %% 
  33. %% Error Reports in case of UNCHANGED versions to 
  34. %% 
  35. %% F. Mittelbach 
  36. %% Eichenweg 29 
  37. %% D-6500 Mainz 1 
  38. %% Federal Republic of Germany 
  39. %% Bitnet: <PZF5HZ@RUIPC1E> 
  40. %% 
  41. %% Please do not request updates from me. Distribution is done only 
  42. %% through Mail-Servers and TeX organisations. 
  43. %% 
  44.  
  45. \def\fileversion{v1.6e}
  46. \def\filedate{91/04/03}
  47. \def\docdate {90/02/17}
  48.  
  49. %% \CheckSum{1459}
  50. %% \CharacterTable
  51. %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  52. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  53. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  54. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  55. %%   Dollar        \$     Percent       \%     Ampersand     \&
  56. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  57. %%   Asterisk      \*     Plus          \+     Comma         \,
  58. %%   Minus         \-     Point         \.     Solidus       \/
  59. %%   Colon         \:     Semicolon     \;     Less than     \<
  60. %%   Equals        \=     Greater than  \>     Question mark \?
  61. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  62. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  63. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  64. %%   Right brace   \}     Tilde         \~}
  65. %%
  66. \@ifundefined{macro@cnt}{}{\endinput}
  67. \typeout{Style-Option: `doc' \fileversion
  68.    \@spaces\space\space <\filedate>  (FMi)}
  69. \typeout{English Documentation
  70.    \@spaces\@spaces\space <\docdate> (RMCS and FMi)}
  71. \catcode`\^^A=14
  72. \def\macrocode{\macro@code
  73.    \frenchspacing \@vobeyspaces
  74.    \xmacro@code}
  75. \def\macro@code{%
  76.    \topsep \MacrocodeTopsep
  77.    \@beginparpenalty \predisplaypenalty
  78.    \trivlist \parskip \z@ \item[]%
  79.    \MacroFont
  80.    \leftskip\@totalleftmargin \advance\leftskip\MacroIndent
  81.    \rightskip\z@ \parindent\z@ \parfillskip\@flushglue
  82.    \blank@linefalse \def\par{\ifblank@line
  83.                              \leavevmode\fi
  84.                              \blank@linetrue\@@par}
  85.    \obeylines \let\do\@makeother \catcode`\`\active \@noligs \dospecials
  86.    \global\@newlistfalse
  87.    \global\@minipagefalse
  88.    \ifcodeline@index
  89.      \everypar{\global\advance\c@CodelineNo\@ne
  90.                \llap{\theCodelineNo\ \hskip\@totalleftmargin}}%
  91.    \fi
  92.    \init@crossref}
  93. \newif\ifblank@line
  94. \def\endmacrocode{%
  95.                  \everypar{}%
  96.                  \global\@inlabelfalse
  97.                  \endtrivlist
  98.                  \close@crossref}
  99. \@ifundefined{MacroFont}{%
  100.   \ifx\undefined\selectfont
  101.     \def\MacroFont{\small\tt}\else
  102.     \def\MacroFont{\math@fontsfalse\small\tt}\fi
  103.   }{}
  104. \newskip\MacrocodeTopsep \MacrocodeTopsep = 3pt plus 1.2pt minus 1pt
  105. \newdimen\MacroIndent
  106. \settowidth\MacroIndent{\rm\scriptsize 00\ }
  107. \@namedef{macrocode*}{\macro@code\sxmacro@code}
  108. \expandafter\let\csname endmacrocode*\endcsname = \endmacrocode
  109. \catcode`\!=\catcode`\%   ^^A In this section there must not be
  110.                               ^^A any exclamation marks.
  111.                               ^^A
  112. \begingroup
  113. \catcode`\|=\z@ \catcode`\[=\@ne \catcode`\]=\tw@
  114. \catcode`\{=12 \catcode`\}=12
  115. \catcode`\%=12 \catcode`\ =\active \catcode`\\=\active
  116. !%    \end{macrocode*}
  117. !    Next follows the actual definition of  \verb+\macro@code+;
  118. !    notice the
  119. !    use of the new escape character.  We manage to get the argument
  120. !    surrounded by the string \verb+\end{macrocode}+, but at the end
  121. !    however, in spite of the actual characters used during the
  122. !    definition of
  123. !    this macro, \verb+\end+ with the argument \verb+{macrocode}+
  124. !    will be executed, to ensure a balanced environment.
  125. !    \begin{macrocode*}
  126. |gdef|xmacro@code#1%    \end{macrocode}[#1|end[macrocode]]
  127. !%    \end{macrocode*}
  128. ! \begin{macro}{\sxmacro@code}
  129. !    The definition of \verb+\sxmacro@code+ is completely analogous,
  130. !    only
  131. !    here a slightly different terminating string will be used.
  132. !    Note that the space is not active in this environment.
  133. !    \begin{macrocode}
  134. |catcode`| =12
  135. |gdef|sxmacro@code#1%    \end{macrocode*}[#1|end[macrocode*]]
  136. !%    \end{macrocode}
  137. !    Because the \verb+\catcode+ changes have been made local by
  138. !    commencing a
  139. !    new group, there now follows the matching \verb+\endgroup+
  140. !    in a rather
  141. !    unusual style of writing.
  142. !    \begin{macrocode}
  143. |endgroup
  144. !%    \end{macrocode}
  145. \catcode`\!=12
  146. \def\DescribeMacro{\leavevmode\@bsphack
  147.    \begingroup\MakePrivateLetters\Describe@Macro}
  148. \def\Describe@Macro#1{\endgroup
  149.               \marginpar{\raggedleft\PrintDescribeMacro{#1}}%
  150.               \SpecialUsageIndex{#1}\@esphack\ignorespaces}
  151. \def\DescribeEnv{\leavevmode\@bsphack\begingroup\MakePrivateLetters
  152.   \Describe@Env}
  153. \def\Describe@Env#1{\endgroup
  154.               \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
  155.               \SpecialEnvIndex{#1}\@esphack\ignorespaces}
  156. \reversemarginpar
  157. \setlength\marginparpush{0pt}  \setlength\marginparwidth{8pc}
  158. {\catcode`\|=\z@ \catcode`\\=12
  159. |gdef|bslash{\}}
  160. \def\verbatim{\@beginparpenalty \predisplaypenalty \@verbatim
  161.               \MacroFont \frenchspacing \@vobeyspaces \@xverbatim}
  162. \def\@verbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
  163.       \leftskip\@totalleftmargin\rightskip\z@
  164.       \parindent\z@\parfillskip\@flushglue\parskip\z@
  165.       \@tempswafalse
  166.  \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
  167.    \check@percent}%
  168.  \obeylines \tt \catcode`\`\active \@noligs \let\do\@makeother
  169.  \dospecials}
  170. {\catcode`\%=12
  171.  \long\gdef\check@percent#1{\ifx #1%\let\next\@empty \else
  172.                                     \let\next=#1\fi \next}}
  173. \newcount\macro@cnt \macro@cnt=0
  174. \newcount\macro@level \macro@level=0
  175. \def\macro{%
  176.    \ifnum\macro@level=\z@ \begingroup \fi
  177.    \MakePrivateLetters \m@cro@}
  178. \long\def\m@cro@#1{\endgroup \topsep\MacroTopsep \trivlist
  179.    \advance\macro@level\@ne
  180.    \edef\saved@macroname{\string#1}%
  181.   \def\makelabel##1{\llap{##1}}%
  182.   \if@inlabel
  183.     \let\@tempa\@empty \count@\macro@cnt
  184.     \loop \ifnum\count@>\z@
  185.       \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
  186.     \edef\makelabel##1{\llap{\vtop to\baselineskip
  187.                                {\@tempa\hbox{##1}\vss}}}%
  188.     \advance \macro@cnt \@ne
  189.   \else  \macro@cnt\@ne  \fi
  190.   \edef\@tempa{\noexpand\item[\noexpand\PrintMacroName{\string#1}]}%
  191.   \@tempa
  192.   {\advance\c@CodelineNo\@ne\SpecialMainIndex{#1}\nobreak}%
  193.   \def\@tempa{#1}%
  194.   \ifx\@tempa\@defpar \else \DoNotIndex{#1}\fi
  195.   \ignorespaces}
  196. \def\endmacro{%
  197.    \endtrivlist
  198.    \ifnum\macro@level>\@ne \advance\macro@level\m@ne \begingroup \fi}
  199. \newskip\MacroTopsep     \MacroTopsep = 7pt plus 2pt minus 2pt
  200. \@ifundefined{PrintMacroName}
  201.    {\def\PrintMacroName#1{\strut \MacroFont \string #1\ }}{}
  202. \@ifundefined{PrintDescribeMacro}
  203.    {\def\PrintDescribeMacro#1{\strut \MacroFont \string #1\ }}{}
  204. \@ifundefined{PrintDescribeEnv}
  205.    {\def\PrintDescribeEnv#1{\strut \MacroFont #1\ }}{}
  206. \def\SpecialEscapechar#1{%
  207.     \begingroup \catcode`\~\active
  208.      \uccode`\~`#1%
  209.      \uppercase{\gdef\active@escape@char{~}}%
  210.      \escapechar\m@ne  \xdef\special@escape@char{\string#1}%
  211.    \endgroup}
  212. \begingroup   \catcode`\|=\z@  \catcode`\\=\active
  213. |gdef|init@crossref{|catcode`|\|active   |let\|bslash
  214.     |MakePrivateLetters
  215.     |catcode|expandafter`|special@escape@char|active
  216.     |expandafter|let|active@escape@char|scan@macro}
  217. |endgroup
  218. \SpecialEscapechar{\\}
  219. \@ifundefined{MakePrivateLetters}
  220.     {\let\MakePrivateLetters\makeatletter}{}
  221. \def\close@crossref{\SpecialEscapechar\\}
  222. \def\scan@macro{%
  223.    \special@escape@char
  224.    \step@checksum
  225.    \ifscan@allowed
  226.       \let\macro@namepart\@empty
  227.       \def\next{\futurelet\next\macro@switch}%
  228.    \else \let\next\@empty \fi
  229.    \next}
  230. \newif\ifscan@allowed    \scan@allowedtrue
  231. \def\DisableCrossrefs{\@bsphack\scan@allowedfalse\@esphack}
  232. \def\EnableCrossrefs{\@bsphack\scan@allowedtrue
  233.                      \def\DisableCrossrefs{\@bsphack\@esphack}\@esphack}
  234. \def\macro@switch{\ifcat\noexpand\next a%
  235.      \let\next\macro@name
  236.      \else \let\next\short@macro  \fi
  237.    \next}
  238. \def\short@macro#1{\edef\macro@namepart{\string#1}%
  239.    \ifnot@excluded
  240.      \produce@index{#1}\fi
  241.     \scan@allowedfalse#1%
  242.     \scan@allowedtrue }
  243. \def\produce@index#1{%
  244.   \if\noexpand#1\special@escape@char
  245.      \scan@allowedfalse \it@is@a\special@escape@char \else
  246.      \if\noexpand#1\bslash \it@is@a\bslash \else
  247.        \if\noexpand#1\space \it@is@a\space \else
  248.          \ifx#1\par
  249.          \it@is@a\space \else
  250.          \ifx#1\relax \else
  251.            \if\noexpand#1\bgroup \LeftBraceIndex \else
  252.              \if\noexpand#1\egroup \RightBraceIndex \else
  253.                \if\noexpand#1\percentchar \PercentIndex \else
  254.                  \it@is@a{\string#1}%
  255.        \fi \fi \fi \fi \fi \fi \fi \fi}
  256. \def\macro@name#1{\edef\macro@namepart{\macro@namepart#1}%
  257.      \futurelet\next\more@macroname}
  258. \def\more@macroname{\ifcat\noexpand\next a%
  259.      \let\next\macro@name
  260.      \else \let\next\macro@finish \fi
  261.      \next}
  262. \def\macro@finish{%
  263.   \macro@namepart
  264.   \ifnot@excluded
  265.      \edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}%
  266.      \@tempa  \fi}
  267. \def\DoNotIndex{\begingroup \MakePrivateLetters
  268.     \do@not@index}
  269. \long\def\do@not@index#1{%
  270.     \global\let\@gtempa\index@excludelist
  271.     \def\@elt{\noexpand\@elt\noexpand}%
  272.     \def\@tempa{#1}\@for\@tempb:=\@tempa\do
  273.       {\xdef\@gtempa{\@gtempa \expandafter \@elt \@tempb}}%
  274.   \endgroup \let\index@excludelist\@gtempa}
  275. \def\index@excludelist{}
  276. \def\@for#1:=#2\do#3{\expandafter\def\expandafter\@fortmp
  277.       \expandafter{#2}%
  278.       \ifx\@fortmp\@empty \else
  279.           \expandafter\@forloop#2,\@nil,\@nil,\@@#1{#3}\fi}
  280. \def\ifnot@excluded{\@tempswatrue
  281.     \setbox\z@\hbox{\let\@elt\exclude@test \index@excludelist}%
  282.     \if@tempswa}
  283. \def\str@p#1>{}
  284. \def\exclude@test#1{%
  285.     \edef\macro@namepart{\expandafter\str@p\meaning\macro@namepart}
  286.     \edef\@tempa{\expandafter\@gobble\string#1}%
  287.     \ifx \macro@namepart\@tempa
  288.        \aftergroup\@tempswafalse \let\@elt\@gobble \fi}
  289. \@ifundefined{actualchar}{\def\actualchar{=}}{}
  290. \@ifundefined{quotechar}{\def\quotechar{!}}{}
  291. \@ifundefined{levelchar}{\def\levelchar{>}}{}
  292. \@ifundefined{encapchar}{\def\encapchar{|}}{}
  293. \@ifundefined{verbatimchar}{\def\verbatimchar{+}}{}
  294. \def\SpecialIndex#1{\@bsphack\special@index{\expandafter\@gobble
  295.                                       \string#1\actualchar
  296.       \string\verb\quotechar*\verbatimchar\string#1\verbatimchar}%
  297.     \@esphack}
  298.  
  299. \def\SpecialMainIndex#1{\@bsphack\special@index{\expandafter\@gobble
  300.                                         \string#1\actualchar
  301.                                         \string\verb
  302.                                         \quotechar*\verbatimchar
  303.                                         \string#1\verbatimchar
  304.                                         \encapchar main}%
  305.                         \@esphack}
  306. \def\SpecialUsageIndex#1{\@bsphack\index{\expandafter\@gobble\string#1%
  307.     \actualchar\string\verb\quotechar*\verbatimchar
  308.     \string#1\verbatimchar
  309.     \encapchar usage}\@esphack}
  310. \def\SpecialEnvIndex#1{\@bsphack
  311.     \index{#1\actualchar{\tt #1} (environment)\encapchar usage}%
  312.     \index{environments:\levelchar{\tt #1}\encapchar usage}\@esphack}
  313. \def\SortIndex#1#2{\index{#1\actualchar#2}}
  314. \def\it@is@a#1{\special@index{\quotechar #1\actualchar
  315.                           \string\verb\quotechar*\verbatimchar
  316.                           \quotechar\bslash\quotechar#1\verbatimchar}}
  317. \@ifundefined{LeftBraceIndex}{\def\LeftBraceIndex{%
  318.    \special@index{\bgroup\actualchar\string\verb\quotechar*\verbatimchar
  319.           \quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{}
  320.  
  321. \@ifundefined{RightBraceIndex}{\def\RightBraceIndex{%
  322.  \special@index{\egroup\actualchar\string\iffalse{\string\fi\string\verb
  323.            \quotechar*\verbatimchar\quotechar\bslash}\verbatimchar}}}{}
  324. \@ifundefined{PercentIndex}{\def\PercentIndex{%
  325.     \special@index{\quotechar\percentchar\actualchar\string\verb
  326.            \quotechar*\verbatimchar\quotechar\bslash
  327.            \percentchar\percentchar\verbatimchar}}}{}
  328. {\catcode`\%=12 \gdef\percentchar{%}}
  329. \input{multicol.sty}
  330. \newdimen\IndexMin         \IndexMin       = 80pt
  331. \newcount\c@IndexColumns   \c@IndexColumns = 3
  332. \renewenvironment{theindex}
  333.     {\begin{multicols}\c@IndexColumns[\index@prologue][\IndexMin]%
  334.      \IndexParms \let\item\@idxitem \ignorespaces}%
  335.   {\end{multicols}}
  336. \long\def\IndexPrologue#1{\@bsphack\def\index@prologue{#1}\@esphack}
  337. \@ifundefined{index@prologue}
  338.      {\def\index@prologue{\section*{Index}%
  339.                  \markboth{Index}{Index}%
  340.                  The italic numbers denote the pages where the
  341.                  corresponding entry is described,
  342.                  numbers underlined point to the definition,
  343.                  all others indicate the places where it is used.
  344.                  }}{}
  345. \@ifundefined{IndexParms}
  346.     {\def\IndexParms{%
  347.        \parindent \z@
  348.        \columnsep 15pt
  349.        \parskip 0pt plus 1pt
  350.        \rightskip 15pt
  351.        \mathsurround \z@
  352.        \parfillskip=-15pt
  353.         \small
  354.        \def\@idxitem{\par\hangindent 30pt}%
  355.        \def\subitem{\@idxitem\hspace*{15pt}}%
  356.        \def\subsubitem{\@idxitem\hspace*{25pt}}%
  357.        \def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}%
  358.       }}{}
  359. \def\efill{\hfill\nopagebreak}%
  360. \def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus  1fill}%
  361. \def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil}%
  362. \def\pfill{\unskip~\dotfill\penalty500\strut\nobreak
  363.                \dotfil~\ignorespaces}%
  364. \def\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}}
  365. \@ifundefined{main}{\def\main#1{\underline{#1}}}{}
  366. \@ifundefined{usage}{\def\usage#1{{\it #1}}}{}
  367. \def\PrintIndex{\@input{\jobname.ind}}
  368. \def\printindex{\typeout{\string\printindex\space is obsolete!}%
  369.                 \typeout{Please use \string\PrintIndex\space
  370.                          if you are a macro implementor^^J
  371.                          or get a newer version of the documented
  372.                          software if you are a user}%
  373.                 \PrintIndex}
  374. \def\changes{\@bsphack\begingroup\@sanitize
  375.    \catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
  376.    \changes@}
  377. \def\changes@#1#2#3{%
  378.   \def\protect##1{\string##1\space}%
  379.   \edef\@tempa{\noexpand\glossary{#1\levelchar
  380.                                  \expandafter\@gobble
  381.                                  \saved@macroname\actualchar
  382.                                  \string\verb\quotechar*%
  383.                                  \verbatimchar\saved@macroname
  384.                                  \verbatimchar:\levelchar #3}}%
  385.   \@tempa\endgroup\@esphack}
  386. \def\saved@macroname{` General Changes '}
  387. \let\RecordChanges\makeglossary
  388. \newdimen\GlossaryMin         \GlossaryMin       = 80pt
  389. \newcount\c@GlossaryColumns   \c@GlossaryColumns = 2
  390. \newenvironment{theglossary}{%
  391.     \begin{multicols}\c@GlossaryColumns[\glossary@prologue][\GlossaryMin]%
  392.     \GlossaryParms \let\item\@idxitem \ignorespaces}%
  393.    {\end{multicols}}
  394. \long\def\GlossaryPrologue#1{\@bsphack
  395.                              \def\glossary@prologue{#1}%
  396.                              \@esphack}
  397. \@ifundefined{glossary@prologue}
  398.      {\def\glossary@prologue{\section*{{Change History}}%
  399.                  \markboth{{Change History}}{{Change History}}%
  400.                  }}{}
  401. \@ifundefined{GlossaryParms}{\let\GlossaryParms\IndexParms}{}
  402. \def\PrintChanges{\@input{\jobname.gls}}
  403. \long\def\StopEventually#1{\@bsphack\gdef\Finale{#1%
  404.               \check@checksum}%
  405.            \init@checksum
  406.            \@esphack}
  407. \def\OnlyDescription{\@bsphack\long\def\StopEventually##1{%
  408.            ##1\endinput}\@esphack}
  409. \begingroup
  410. \obeyspaces%
  411. \catcode`\^^M\active%
  412. \gdef\meta{\begingroup\obeyspaces\catcode`\^^M\active%
  413. \let^^M\do@space\let \do@space%
  414. \def\-{\egroup\discretionary{-}{}{}\hbox\bgroup\it}%
  415. \m@ta}%
  416. \endgroup
  417. \def\m@ta#1{\leavevmode\hbox\bgroup$\langle$\it#1\/$\rangle$\egroup
  418.     \endgroup}
  419. \def\do@space{\egroup\space
  420.     \hbox\bgroup\it\futurelet\next\sp@ce}
  421. \def\sp@ce{\ifx\next\do@space\expandafter\sp@@ce\fi}
  422. \def\sp@@ce#1{\futurelet\next\sp@ce}
  423. \def\IndexInput#1{%
  424.      \begingroup \macro@code
  425.    \frenchspacing \@vobeyspaces
  426.      \input{#1}\endmacrocode
  427.      \endgroup}
  428. \def\maketitle{\par
  429.       \begingroup \def \thefootnote {\fnsymbol {footnote}}%
  430.       \setcounter {footnote}\z@
  431.       \def \@makefnmark {\hbox to \z@{$^{\@thefnmark }$\hss }}%
  432.       \if@twocolumn \twocolumn [\@maketitle ]%
  433.       \else \newpage \global \@topnum \z@ \@maketitle \fi
  434.        \thispagestyle{titlepage}\@thanks \endgroup
  435.       \setcounter {footnote}\z@
  436.       \gdef\@date{\today}\gdef\@thanks{}%
  437.       \gdef\@author{}\gdef\@title{}}
  438. \@ifundefined{ps@titlepage}
  439.     {\let\ps@titlepage=\ps@plain}{}
  440. \def\init@checksum{\relax
  441.     \global\bslash@cnt\z@}
  442. \def\check@checksum{\relax
  443.      \ifnum\check@sum=\z@
  444.        \typeout{**********************************}%
  445.        \typeout{* This macro file has no checksum!}%
  446.        \typeout{* The checksum should be \the\bslash@cnt!}%
  447.        \typeout{**********************************}%
  448.      \else
  449.        \ifnum\check@sum=\bslash@cnt
  450.          \typeout{*******************}%
  451.          \typeout{* Checksum passed *}%
  452.          \typeout{*******************}%
  453.        \else
  454.          \errhelp\wrong@checksum
  455.          \errmessage{Checksum not passed
  456.                     (\the\check@sum<>\the\bslash@cnt)}%
  457.         \fi
  458.      \fi
  459.      \global\check@sum\z@}
  460. \newcount\check@sum           \check@sum  = \z@
  461. \newcount\bslash@cnt          \bslash@cnt = \z@
  462. \newhelp\wrong@checksum
  463.    {The currently documented file seems to be wrong.^^J%
  464.     Try to get a correct version.}%
  465. \def\CheckSum#1{\@bsphack\global\check@sum#1\relax\@esphack}
  466. \def\step@checksum{\global\advance\bslash@cnt\@ne}
  467. \def\CharacterTable{\begingroup \CharTableChanges \character@table}
  468. \begingroup
  469. \catcode`\~=11
  470. \gdef\character@table#1{\def\used~table{#1}%
  471.     \ifx\used~table\default~table
  472.          \typeout{***************************}%
  473.          \typeout{* Character table correct *}%
  474.          \typeout{***************************}%
  475.     \else
  476.        \errhelp\wrong@table
  477.        \errmessage{Character table corrupted}%
  478.        \show\default~table
  479.        \show\used~table\fi
  480.     \endgroup}
  481. \newhelp\wrong@table{Some of the ASCII characters are corrupted.^^J
  482.           I now \string\show\space you both tables for comparison.}
  483. \global\let\CharTableChanges\makeatother
  484. \CharTableChanges
  485. \gdef\default~table
  486.     {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  487.      Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  488.      Digits        \0\1\2\3\4\5\6\7\8\9
  489.      Exclamation   \!     Double quote  \"     Hash (number) \#
  490.      Dollar        \$     Percent       \%     Ampersand     \&
  491.      Acute accent  \'     Left paren    \(     Right paren   \)
  492.      Asterisk      \*     Plus          \+     Comma         \,
  493.      Minus         \-     Point         \.     Solidus       \/
  494.      Colon         \:     Semicolon     \;     Less than     \<
  495.      Equals        \=     Greater than  \>     Question mark \?
  496.      Commercial at \@     Left bracket  \[     Backslash     \\
  497.      Right bracket \]     Circumflex    \^     Underscore    \_
  498.      Grave accent  \`     Left brace    \{     Vertical bar  \|
  499.      Right brace   \}     Tilde         \~}
  500. \endgroup
  501. \newif\ifcodeline@index \codeline@indexfalse
  502. \def\codeline@wrindex#1{\immediate\write\@indexfile
  503.             {\string\indexentry{#1}%
  504.             {\number\c@CodelineNo}}}
  505. \let\special@index = \@gobble
  506. \def\CodelineIndex{\makeindex
  507.                    \codeline@indextrue
  508.                    \let\special@index\codeline@wrindex}
  509. \def\PageIndex{\makeindex
  510.                \codeline@indexfalse
  511.                \let\special@index\index}
  512. \newcount\c@CodelineNo  \c@CodelineNo\z@
  513. \def\theCodelineNo{\rm\scriptsize\arabic{CodelineNo}}
  514.        \tolerance=1000\relax
  515. { \catcode`\"=12
  516.   \global\mathcode`\\="705C \global\mathcode`\@="7040 }
  517. \@ifundefined{DocstyleParms}{}{}
  518. \DocstyleParms     \let\DocstyleParms\relax
  519. \@ifundefined{AmSTeX}
  520.    {\def\AmSTeX{\leavevmode\hbox{$\cal A\kern-.2em\lower.376ex%
  521.         \hbox{$\cal M$}\kern-.2em\cal S$-\TeX}}}{}
  522. \@ifundefined{BibTeX}
  523.    {\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em%
  524.     T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}
  525. \@ifundefined{SliTeX}
  526.    {\def\SliTeX{{\rm S\kern-.06emL\kern-.18em\raise.32ex\hbox
  527.                 {\sc i}\kern -.03em\TeX}}}{}
  528. \@ifundefined{PlainTeX}{\def\PlainTeX{{\sc Plain}\kern2pt\TeX}}{}
  529. \@ifundefined{Web}{\def\Web{{\sc Web}}}{}
  530. \def\MakePercentIgnore{\catcode`\%9\relax}
  531. \def\MakePercentComment{\catcode`\%14\relax}
  532. \def\DocInput#1{\MakePercentIgnore\input{#1}\MakePercentComment}
  533. \endinput
  534. %% 
  535. %% End of file `doc.sty'.
  536.